//
// Created by 12345 on 2025/2/19.
//

#ifndef DEVICE_AGENT_DOG58_PROJECT_REPORT_BEAN_H
#define DEVICE_AGENT_DOG58_PROJECT_REPORT_BEAN_H

#include <string>
#include "cstdint"
#include "daf/DeviceAgentMessage.pb.h"
#include "daf/daf_model.h"
#include "gazella/logger.h"

class ReportBean {
private:
    ReportBean() = default;

    ~ReportBean() = default;

public:

    uint8_t modeCode = 0;//0：无效 1：踏步 2：RL模式 3：停止踏步/退出RL模式

    int dianliang = 0;             // 电量
    int forward_back_dir = 0;     //前进后退 方向  0：前，1：后
    int forward_back_speed = 0;    // 前进/后退 速度
    int left_right_dir=0;          // 左平移/右平移 方向
    int left_right_speed = 0;      // 左平移/右平移 速度
    int left_right_turn_dir=0;//左转/右转 方向
    int left_right_turn_speed = 0; // 左转/右转 速度
    int fuyang_dir = 0;              // 俯仰角 方向
    int fuyang_angle = 0;              // 俯仰角 角度
    int henggun_dir = 0;             // 横滚角 方向
    int henggun_angle = 0;             // 横滚角 角度
    int gait_info = 0;             // 步态信息 0：轻步态 1：楼梯 2：斜坡 3：匍匐 4：跑步 5：感知楼梯 9：跨沟 8：RL无感知行走
    int base_state = 0;     //0：正常趴下 1：正在起立状态 2：初始站立状态 3：力控站立状态 4：踏步状态 5：正在趴下状态 6：软急停/摔倒状态 0x10：进入RL学习状态
    int charge_state = 0;          // 充电状态  0x00：空闲状态 0x01：充当任务状态 0x02：正在充电 0x03：充电结束状态 0x04：充电桩断电 0x05：safety_warning(请先拔掉充电器) 0x12：获取定位信息超时 0x13：充电定位算法开启失败 0x14：到达超时 0x15：没有定位信息 0x16：定位信息跳变 0x17：检测充电电流失败，趴在充电桩 0x1a：检测充电电流失败，退出充电桩
    int jingdu = 0;                    // 经度
    int weidu = 0;                     // 纬度
    int hangxiang_angle = 0;           // 横向角
    int jiaoju = 0;               // 焦距
    int video1_state = 0;          // 视频流1状态
    int video2_state = 0;          // 视频流1状态
    int tuxiang_function_state = 0;// 图像function, 不清楚是啥
    int shibie_state = 0;          // 识别状态
    int huokong_state = 0;             // 火控状态
    int daji_state = 0;                // 打击状态
    int baoxian_state = 0;             // 保险状态
    int tuobaliang_x = 0;              //
    int tuobaliang_y = 0;

    void parse(std::string &msg);
    void setDafData();

    static ReportBean &getInstance();

};


#endif //DEVICE_AGENT_DOG58_PROJECT_REPORT_BEAN_H
